//导入定义验证规则的包

const Joi = require('@hapi/joi')

/**
 * string() 值必须是字符串
 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串
 * min(length) 最小长度
 * max(length) 最大长度
 * required() 值是必填项，不能为 undefined
 * pattern(正则表达式) 值必须符合正则表达式的规则
 */


/**
 * 登录注册表单验证
 */

//定义用户名的验证规则
const username = Joi.string().alphanum().min(1).max(10).required();
     // 密码的验证规则
const password  = Joi.string().pattern(/^[\S]{6,12}$/).required();

//暴露出去  定义验证呵呵登录表单数据的对象
exports.reg_login_schema = {
    body:{   // body 是用来获取表单数据的
        username,
        password,
    }
}

/**
 * 个人中心表单验证
 */
//定义 id, nickname, email 的验证规则
const id = Joi.number().integer().min(1).required();

const nickname = Joi.string().required();

const email = Joi.string().email().required();
//暴露出去 
exports.update_userinfo_schema = {
    body:{
        id,
        nickname,
        email,
    }
}


/**
 * 重置密码验证
 */
//验证规则对象人- 重置密码
exports.update_password_schema  = {
    body:{
        
        //使用 password 这个规则，验证 req.oldPwd 的值
        oldPwd:password, //旧密码 
        
        // 使用 joi.not(joi.ref('oldPwd')).concat(password) 规则，验证 req.body.newPwd 的值
        // 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致
        // 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
        // 3. .concat() 用于合并多条验证规则  joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
        newPwd: Joi.not(Joi.ref('oldPwd')).concat(password),
    }
}


/**
 * 头像的验证规则
 */
//定义验证 avatar 头像的验证规则
const avatar = Joi.string().dataUri().required();

exports.update_avatar_schema = {
    body:{
        avatar
    }
}